import javax.swing.*;
import java.io.File;
import java.io.IOException;
import java.util.Locale;
import java.util.Scanner;

public class FindByName2 {
    public static void main(String[] args) throws IOException {
        //请用户输入要查询的目录
        System.out.println("请输入要查询的目录：");
        Scanner scanner = new Scanner(System.in);
        String rootPath = scanner.nextLine();
        //创建一个File对象
        File file = new File(rootPath);
        //判断输入的目录是否有效
        if(!file.exists()) {
            System.out.println("您输入的目录不存在...");
            return;
        }
        //判断输入的是否是目录
        if(!file.isDirectory()) {
            System.out.println("您输入的目录无效...");
            return;
        }
        //请求用户输入指定字符
        System.out.println("请输入要查找的字符：");
        String KeyWord = scanner.nextLine();
        //判断字符是否有效
        if(KeyWord == null || KeyWord.isEmpty()) {
            System.out.println("输入字符为空...");
            return;
        }

        find(file,KeyWord);

        scanner.close();
    }

    private static void find(File file, String keyWord) throws IOException {
        //遍历所有文件及目录
        File [] files = file.listFiles();
        //判断数组是否为空
        if(files.length == 0) {
            return;
        }
        //循环判断
        for (int i = 0; i < files.length; i++) {
            //如果是目录，进行递归
            if(files[i].isDirectory()) {
                find(files[i],keyWord);
            }
            //如果是文件，进行查询
            if(files[i].isFile()) {
                String fileName = files[i].getName();
                //判断文件名字中是否含有keyWord
                if(fileName.contains(keyWord)) {
                    //找到了 询问是否删除
                    System.out.println("找到文件：" + files[i].getCanonicalPath() +
                            " 包含关键字：" + keyWord + "，是否删除（Y/N）");
                    Scanner scanner = new Scanner(System.in);
                    String next = scanner.next();
                    if(next.equalsIgnoreCase("y")) {
                        //执行删除逻辑
                        files[i].delete();
                        System.out.println("删除文件：" + files[i].getCanonicalPath() + "成功");
                    }
                    scanner.close();
                }
            }
        }
    }
}
